Spring Cloud Sleuth, Zipkin এবং Prometheus ব্যবহার করে মাইক্রোসার্ভিস আর্কিটেকচারের পারফরম্যান্স এবং আচরণ পর্যবেক্ষণ করা সহজ হয়। এগুলো একত্রে ব্যবহৃত হলে সিস্টেমের ট্রেস, লগ এবং মেট্রিকস পর্যবেক্ষণ করার জন্য শক্তিশালী টুলস সরবরাহ করে।
Spring Cloud Sleuth
Spring Cloud Sleuth হল একটি ডিস্ট্রিবিউটেড ট্রেসিং টুল, যা অ্যাপ্লিকেশনের মাধ্যমে রিকোয়েস্টের যাত্রাপথ ট্র্যাক করতে সহায়তা করে। এটি প্রতিটি ট্রানজেকশনের জন্য ট্রেস আইডি (Trace ID) এবং স্প্যান আইডি (Span ID) তৈরি করে।
বৈশিষ্ট্যসমূহ
- ট্রানজেকশনের সম্পূর্ণ যাত্রাপথ ট্র্যাকিং।
- লগ মেসেজে ট্রেস এবং স্প্যান আইডি যোগ করে।
- অন্যান্য টুলের সঙ্গে সহজ ইন্টিগ্রেশন, যেমন Zipkin।
উদাহরণ
Spring Boot অ্যাপ্লিকেশনে Sleuth যোগ করতে নিচের নির্ভরতা (Dependency) যুক্ত করুন:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
Sleuth স্বয়ংক্রিয়ভাবে ট্রেস এবং স্প্যান পরিচালনা করবে এবং লগ আউটপুটে ট্রেস আইডি যুক্ত করবে।
Zipkin
Zipkin হল একটি ডিস্ট্রিবিউটেড ট্রেসিং সিস্টেম, যা Spring Cloud Sleuth-এর তৈরি ট্রেস ডেটা সংগ্রহ এবং ভিজুয়ালাইজ করতে ব্যবহৃত হয়। এটি রিকোয়েস্টের যাত্রাপথ এবং ডেলেতে (Delay) কীভাবে সমস্যা তৈরি হচ্ছে তা সনাক্ত করতে সাহায্য করে।
বৈশিষ্ট্যসমূহ
- রিকোয়েস্টের লেটেন্সি বিশ্লেষণ।
- ট্রানজেকশনের প্রতিটি ধাপের সময়কাল দেখানো।
- সিস্টেমের বটলনেক সনাক্ত করা।
উদাহরণ
Zipkin ব্যবহার করতে, নিচের নির্ভরতা যোগ করুন:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
এরপর, application.properties বা application.yml ফাইলে Zipkin সার্ভারের URL নির্ধারণ করুন:
spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1.0
Zipkin ইন্টারফেসে ট্রেস ডেটা দেখার জন্য ব্রাউজারে http://localhost:9411 খুলুন।
Prometheus
Prometheus একটি অপেন-সোর্স মনিটরিং এবং অ্যালার্টিং টুল, যা টাইম-সিরিজ ডেটা সংগ্রহ এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। এটি মেট্রিকস সংগ্রহ করতে Spring Boot অ্যাপ্লিকেশনের Actuator মডিউলের সঙ্গে ইন্টিগ্রেট করা হয়।
বৈশিষ্ট্যসমূহ
- টাইম-সিরিজ ডেটা সংগ্রহ।
- কাস্টম মেট্রিকস সংজ্ঞায়ন।
- রিয়েল-টাইম অ্যালার্টিং।
উদাহরণ
Prometheus ব্যবহার করতে, নিচের নির্ভরতা যোগ করুন:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
application.properties ফাইলে Prometheus জন্য অ্যাকচুয়েটর (Actuator) সক্ষম করুন:
management.endpoints.web.exposure.include=prometheus
management.metrics.export.prometheus.enabled=true
Prometheus-এ মেট্রিকস সংগ্রহ করতে prometheus.yml ফাইলে Spring Boot অ্যাপ্লিকেশনের URL যুক্ত করুন:
scrape_configs:
- job_name: 'spring-boot-app'
static_configs:
- targets: ['localhost:8080']
Prometheus UI খুলতে http://localhost:9090 এ যান।
Spring Cloud Monitoring-এর ইন্টিগ্রেটেড উদাহরণ
স্টেপ ১: Sleuth এবং Zipkin সেটআপ
- Spring Boot অ্যাপ্লিকেশনে Sleuth এবং Zipkin নির্ভরতা যোগ করুন।
- Zipkin সার্ভার চালু করে নিশ্চিত করুন।
স্টেপ ২: Prometheus সেটআপ
- Prometheus কনফিগারেশন ফাইলে Spring Boot অ্যাপ্লিকেশনের URL যোগ করুন।
- Prometheus সার্ভার চালু করুন।
স্টেপ ৩: অ্যাপ্লিকেশন পর্যবেক্ষণ
- Zipkin ব্যবহার করে রিকোয়েস্ট ট্রেস করুন।
- Prometheus ব্যবহার করে মেট্রিকস বিশ্লেষণ এবং সমস্যা সনাক্ত করুন।
Monitoring-এর সুবিধা
- পরীক্ষণযোগ্যতা (Observability): সিস্টেমের আচরণ এবং পারফরম্যান্স পর্যবেক্ষণ করা সহজ।
- দ্রুত সমস্যার সমাধান: রিকোয়েস্ট ট্রেস এবং মেট্রিকস বিশ্লেষণ করে দ্রুত সমস্যার কারণ খুঁজে পাওয়া যায়।
- ডায়নামিক স্কেলিং: পারফরম্যান্স ডেটার ভিত্তিতে ডায়নামিক সিদ্ধান্ত নেওয়া যায়।